[レポート] Amazon CognitoとAmazon Verified PermissionsでバックエンドAPIのきめ細かな(Fine-Grained)認可 をハンズオンで体験してきた #AWSreInvent
こんにちは、ゲーソルの新屋です。
re:Invent2024のセッションレポートをお届けします。
セッション情報
タイトル
- API authorization with Amazon Cognito and Amazon Verified Permissions
セッションタイプ
- Builders' session
スピーカー
- Kevin Shanley, Principal Identity Specialist - WWSO, AWS
- Edward Sun, Security Solutions Architect, Amazon Web Services
- Abrom Douglas, Sr. Solutions Architect, AWS
- Fei Yuan, Principal Engineer, AWS
セッション概要
In this builders’ session, gain hands-on experience with modern authorization in a microservices-based architecture on AWS. Learn how to externalize and customize authentication with Amazon Cognito, apply fine-grained authorization with policy-based access controls using Amazon Verified Permissions, and integrate with APIs that are protected by Amazon API Gateway. You must bring your laptop to participate.
このビルダーズセッションでは、AWS上のマイクロサービスベースのアーキテクチャで最新の認可をハンズオンで体験できます。Amazon Cognitoを使った認証の外部化とカスタマイズ、Amazon Verified Permissionsを使ったポリシーベースのアクセス制御によるきめ細かな認可の適用、Amazon API Gatewayで保護されたAPIとの統合の方法を学びます。参加にはノートパソコンが必要です。
内容
Amazon Congito
- オープンスタンダードおよびフェデレーションを標準サポート
- OAuth2.0
- OIDC
- SAML
- Social Providers
- セキュリティと高可用性
- 追加認証
- 侵害されたパスワード検知
- 多要素認証
- 99.9%のSLA
- 各アプリケーションに対するビルトインUI
- iOS/Android/Web/SPA
つい先日のアップデートもあり、かなり使いやすくなっている印象があります。Cognitoに対して悪い印象あるいは思い出を持っている方は一度確認してみるのがよいと思います。◯◯がイケてない、といったことが数多く解消されています。
そして、Cognitoは認証と認可を拡張することができます。
- Amazon API Gateway
- Amazon Verified Permissions
特にこのハンズオンでは、Amazon Verified Permissionsのきめ細かな(Fine-Grained)認可制御に触れました。
ハンズオンの構成図
ハンズオンの流れ
- CognitoおよびバックエンドAPIリソースのデプロイ
- HostedUIのカスタマイズ
- きめ細か(Fine-Grained)な認可の実装
- Amazon Verified Permission
- パスキーおよびEmailまたはSMSのOTPによる多要素認証
気になったこと
- HostedUIがかなり柔軟にカスタマイズできた
こんな見た目のログイン画面を生成できる
それから
- 日本語はもちろん世界各国12か国語をサポート
- Amazon Verified Permissionと統合することでFine-Grainedな認可(例えば、一時ユーザーなどの特権管理など)も柔軟に可能になった
- Cedar記法はポリシーベースの書き方なので、長くなってしまいがち。その反面、表現豊かに権限を定義できると感じた。
- パスキーをはじめとした多要素認証を数クリックで設定できた
最後に
本セッションと似た内容のブログが公開されていました。
実際に動かしてみるとわかりやすので、こちらも参考になると思います。